﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SIGCBI.Repository;
using SIGCBI.Entities;

namespace SIGCBI.Test.Mantenimientos
{
    [TestClass]
    public class AreaTest
    {
        [TestMethod]
        public void GetAllFromAreas()
        {
            CentroCostoRepository repository = new CentroCostoRepository();
            List<CENTRO_COSTO> actual;
            actual = repository.GetAllFromArea();
            Assert.IsTrue(actual.Count > 0);
        }

        [TestMethod]
        public void GetFromAreaById()
        {
            CentroCostoRepository repository = new CentroCostoRepository();
            int id = 1;
            CENTRO_COSTO actual;
            actual = repository.GetFromAreaById(id);
            Assert.IsTrue(actual.ID == 1);
        }

        [TestMethod]
        public void GetAllFromAreaByDescripcion()
        {
            CentroCostoRepository repository = new CentroCostoRepository();
            var criterio = "SISTEMAS";
            List<CENTRO_COSTO> actual;
            actual = repository.GetFromAreaByDescripcion(criterio);
            Assert.IsTrue(actual.Count >= 1);
            //Assert.IsNotNull(actual);
        }

        [TestMethod]
        public void AddArea()
        {
            CentroCostoRepository repository = new CentroCostoRepository();
            var ListEsperado = (List<CENTRO_COSTO>)repository.GetAllFromArea();
            CENTRO_COSTO area = new CENTRO_COSTO()
            {
                Codigo = "SIS123",
                Descripcion = "SISTEMAS",
                IdTrabajador = 1
            };
            repository.AddArea(area);
            var ListaCTUAL = (List<CENTRO_COSTO>)repository.GetAllFromArea();
            Assert.AreEqual(ListEsperado.Count + 1, ListaCTUAL.Count, "Error ");
        }

        [TestMethod]
        public void UpdateArea()
        {
            CentroCostoRepository repository = new CentroCostoRepository();
            
            var DESCRIPCION = "SISTEMAS";
            
            CENTRO_COSTO area = new CENTRO_COSTO()
            {
                ID = 1,
                Descripcion = "SISTEMAS",
                Codigo = "SIS001",
                IdTrabajador = 1
            };
            repository.UpdateArea(area);
            var existe = repository.GetFromAreaById(1);
            Assert.IsTrue(existe.Descripcion == DESCRIPCION);
        }

        [TestMethod]
        public void RemoveArea()
        {
            CentroCostoRepository repository = new CentroCostoRepository();
            var id = 1;
            repository.RemoveArea(id);
            var existe = repository.GetFromAreaById(id);
            Assert.IsTrue(existe == null);

        }
    }
}
